import Vue from 'vue'

import Element from 'element-ui'
import './assets/styles/element-variables.scss'

import '@/assets/styles/index.scss'; // global css
import '@/assets/styles/ruoyi.scss'; // ruoyi css
import {axiosAuth, axiosFile, axiosGen, download} from '@/utils/request'
import App from './App'
import directive from './directive'; // directive
import plugins from './plugins'; // plugins
import router from './router'
import store from './store'
import {addDateRange, handleTree, resetForm} from "@/utils/ruoyi"
import './assets/icons'; // icon
import './permission'; // permission control
// 分页组件
import Pagination from "@/components/Pagination"
// 自定义表格工具组件
import RightToolbar from "@/components/RightToolbar"
// 富文本组件
import Editor from "@/components/Editor"
// 文件上传组件
import FileUpload from "@/components/FileUpload"
// 图片上传组件
import ImageUpload from "@/components/ImageUpload"
// 图片预览组件
import ImagePreview from "@/components/ImagePreview"
// 字典标签组件
import DictTag from '@/components/DictTag'
// 头部标签组件
import VueMeta from 'vue-meta'
// 字典数据组件
import DictData from '@/components/DictData'
import ZeroContainer from '@/components/zero-container/zero-container.vue'
import ZeroDialog from '@/components/zero-dialog/ZeroDialog'; // 弹框
import ZeroPage from '@/components/zero-page/ZeroPage'; // 分页模块
import ZeroVxeGrid from '@/components/zero-vxe-grid/zero-vxe-grid.vue' //布局
import ZeroImportExport from '@/components/zero-import-export/ZeroImportExport.vue' //导入导出
import JsonViewer from 'vue-json-viewer'; //json格式化
import VXETable from 'vxe-table'
import 'vxe-table/es/style.css'
// import 'vxe-table/lib/style.css'
// import 'xe-utils'

import VxeUIAll from 'vxe-pc-ui'
import 'vxe-pc-ui/es/style.css'

// 引入
import {codemirror} from "vue-codemirror";

// 引入配置对应的文件（样式、主题、代码格式等）
import "@/utils/cm-setting.js";

// 注册使用
Vue.component("codemirror", codemirror);

Vue.use(VxeUIAll)
Vue.use(VXETable)
VXETable.setConfig({zIndex: 9999, size: localStorage.getItem('size') || 'medium'})

Vue.use(Element, {
    size: localStorage.getItem('size') || 'medium' // set element-ui default size
})
Vue.component('zero-container', ZeroContainer)
Vue.component('zero-vxe-grid', ZeroVxeGrid)
Vue.component('zero-page', ZeroPage)
Vue.component('zero-dialog', ZeroDialog)
Vue.component('ZeroImportExport', ZeroImportExport)
// 全局方法挂载
Vue.prototype.$vxeTable = VXETable
Vue.prototype.$axiosAuth = axiosAuth
Vue.prototype.$axiosFile = axiosFile
Vue.prototype.$axiosGen = axiosGen
Vue.prototype.resetForm = resetForm
Vue.prototype.addDateRange = addDateRange
Vue.prototype.download = download
Vue.prototype.handleTree = handleTree

// 全局组件挂载
Vue.component('DictTag', DictTag)
Vue.component('Pagination', Pagination)
Vue.component('RightToolbar', RightToolbar)
Vue.component('Editor', Editor)
Vue.component('FileUpload', FileUpload)
Vue.component('ImageUpload', ImageUpload)
Vue.component('ImagePreview', ImagePreview)

Vue.use(directive)
Vue.use(plugins)
Vue.use(VueMeta)
Vue.use(JsonViewer)
DictData.install()

/**
 * If you don't want to use mock-server
 * you want to use MockJs for mock api
 * you can execute: mockXHR()
 *
 * Currently MockJs will be used in the production environment,
 * please remove it before going online! ! !
 */


Vue.config.productionTip = false

new Vue({
    el: '#app',
    router,
    store,
    render: h => h(App)
})
